import multiprocessing
import time, os, random


def worker(msg):
    # 记录方法开始运行时间
    t_start = time.time()
    print("%s开始工作，进程号为%d" % (msg, os.getpid()))
    # random.random() 返回0~1浮点数
    time.sleep(random.random() * 2)
    t_end = time.time()
    print(msg, "执行完毕耗时 %.2f" % (t_end - t_start))


def main():
    # 定义进程池，最大进程数为3
    po = multiprocessing.Pool(3)
    for i in range(0, 10):
        # 同一时间支持3个子进程运行其他任务阻塞
        po.apply_async(worker, (i,))

    print("---start---")
    # 关闭进程池不再接受新的请求
    po.close()
    # 等待进程池所有子进程执行完成
    po.join()
    print("---end---")


if __name__ == '__main__':
    main()
